package delphorm.web.controller;





import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;

import delphorm.entite.personne.Utilisateur;
import delphorm.service.personne.IPersonne;
import delphorm.web.forms.IdentifierUtilisateurFormulaire;


public class IdentifierUtilisateur extends SimpleFormController {

	private IPersonne servicePersonne;
	/* cette méthode permet de récupérer un formulaire déjà rempli*/
	protected Object formBackingObject(HttpServletRequest request)
	{
		//récupère le formulaire dans la session
		Object formulaire = request.getSession().getAttribute("formulaire");
		
		if(formulaire == null)
		{
			formulaire = new IdentifierUtilisateurFormulaire();	
		}
		return formulaire;
	}
	
	protected void onBindAndValidate(HttpServletRequest request, Object formulaire, BindException errors) throws Exception
	{
		//copie les données du formulaire dans un utilisateur
		IdentifierUtilisateurFormulaire form = (IdentifierUtilisateurFormulaire)formulaire;
		Utilisateur utilisateur = new Utilisateur();
		utilisateur.setLogin(form.getLogin());
		utilisateur.setPassword(form.getPassword());
		utilisateur = servicePersonne.identifierUtilisateur(utilisateur);
		if(utilisateur == null)
		{
			errors.reject("IdentifierUtilisateurFormulaire.existepas");
		}
		
		//mettre l'utilisateur dans la session
		request.getSession().setAttribute("utilisateur",utilisateur);
	}
	//cette méthode permet d'obtenir l'objet formulaire dans la page de confirmation
	protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object formulaire, BindException errors)
	{	
		//rendre le model and view
		//pas de modele (l'utilisateur est déjà dans la session)
		return new ModelAndView("identifierUtilisateurConfirm",null);
	}

	public IPersonne getServicePersonne() {
		return servicePersonne;
	}

	public void setServicePersonne(IPersonne servicePersonne) {
		this.servicePersonne = servicePersonne;
	}

}
